/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package artaza.controlador;

/**
 *
 * @author AGM
 */
import artaza.persistencia.Camarero;
import artaza.service.*;
import com.google.appengine.api.datastore.KeyFactory;
import java.util.Collection;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class CamareroController {

    private CamareroService camareroService;

    @Autowired
    @Required
    public void setCamareroService(CamareroService camareroService) {
        this.camareroService = camareroService;
    }

    @RequestMapping(value = "/listado", method = RequestMethod.GET)
    public String doShowCamarero(Model model) {

        final Collection<Camarero> plantilla = camareroService.getAllcamareros();
        model.addAttribute("plantilla", plantilla);
        return "/listado";
    }

    @RequestMapping(value = "/crear_camarero", method = RequestMethod.POST)
    public String doCrearCamarero(
            @RequestParam("nombre") String nombre,
            @RequestParam("apellidos") String apellidos,
            @RequestParam("dni") String dni,
            @RequestParam("fecha_nac") String fecha_nac,
            @RequestParam("telefono") String telefono,
            @RequestParam("correo") String correo,
            @RequestParam("coche") String coche,
            @RequestParam("disponibilidad") String disponibilidad,
            @RequestParam("categoria") String categoria,
            @RequestParam("comentarios") String comentarios, Model model) {

        if (nombre.length() == 0 || apellidos.length() == 0 || correo.length() == 0) {
            return "redirect:error.html";
        }

        try{
           List <Camarero> c = camareroService.buscar(4,dni);
             return "redirect:listado";
        }catch(Exception exc){
            final Camarero cam = new Camarero(nombre, apellidos, dni, fecha_nac, telefono,
                correo, disponibilidad, coche, categoria, comentarios);
        camareroService.create(cam);

        }finally{
            
        }
        return "redirect:listado";
    }

    @RequestMapping(value = "/borrar_camarero", method = RequestMethod.POST)
    public String doBorrarCamarero(@RequestParam("id") String id, Model model) {
        camareroService.remove(KeyFactory.stringToKey(id));
        return "redirect:listado";
    }

    @RequestMapping(value = "/ir_crear_camarero", method = RequestMethod.GET)
    public String doIr() {
        return "/camareros";
    }

    @RequestMapping(value = "/busqueda", method = RequestMethod.GET)
    public String doBuscar(@RequestParam("criterio") int criterio,
            @RequestParam("palabra") String palabra, Model model) {

        String error = "acierto";
        if (palabra.length() == 0) {
            return "redirect:listado";
        }
        try {
            List<Camarero> resultados = camareroService.buscar(criterio, palabra);
            model.addAttribute("resultados", resultados);
        } catch (Exception e) {
            error = "error";
        } finally {
            model.addAttribute("error", error);
            return "/resultado_busqueda";
        }

    }

    @RequestMapping(value = "/modificar", method = RequestMethod.GET)
    public String doModificar(@RequestParam("id") String id,
            @RequestParam("nombre") String nombre,
            @RequestParam("apellidos") String apellidos,
            @RequestParam("dni") String dni,
            @RequestParam("fecha_nac") String fecha_nac,
            @RequestParam("telefono") String telefono,
            @RequestParam("correo") String correo,
            @RequestParam("coche") String coche,
            @RequestParam("disponibilidad") String disponibilidad,
            @RequestParam("categoria") String categoria,
            @RequestParam("comentarios") String comentarios, Model model) {

        Camarero cam = camareroService.findByPK(KeyFactory.stringToKey(id));

        if (cam.getNombre().compareTo(nombre) != 0) {
            cam.setNombre(nombre);
        }
        if (cam.getApellidos().compareTo(apellidos) != 0) {
            cam.setApellidos(apellidos);
        }
        if (cam.getDni().compareTo(dni) != 0) {
            cam.setDni(dni);
        }
        if (cam.getFecha_nac().compareTo(fecha_nac) != 0) {
            cam.setFecha_nac(fecha_nac);
        }
        if (cam.getTelefono().compareTo(telefono) != 0) {
            cam.setTelefono(telefono);
        }
        if (cam.getCorreo().compareTo(correo) != 0) {
            cam.setCorreo(correo);
        }
        if (cam.getDisponibilidad().compareTo(disponibilidad) != 0) {
            cam.setDisponibilidad(disponibilidad);
        }
        if (cam.getCategoria().compareTo(categoria) != 0) {
            cam.setCategoria(categoria);
        }
        if (cam.getCoche().compareTo(coche) != 0) {
            cam.setCoche(coche);
        }
        if (cam.getComentarios().compareTo(comentarios) != 0) {
            cam.setComentarios(comentarios);
        }
        camareroService.update(cam);
        return "redirect:listado";
    }

    @RequestMapping(value = "/ir_modificar", method = RequestMethod.GET)
    public String doIrModificar(@RequestParam("id") String id, Model model) {
        Camarero cam = camareroService.findByPK(KeyFactory.stringToKey(id));
        model.addAttribute("cam", cam);
        return "/modificar";
    }
}
